package paidaxing.blog.post.service;

import paidaxing.blog.common.result.PageResult;
import paidaxing.blog.post.dto.CategoryDTO;
import paidaxing.blog.post.dto.PostDTO;
import paidaxing.blog.post.dto.request.CategoryRequestDTO;
import paidaxing.blog.post.dto.request.PostQueryRequest;

/**
 * 分类服务接口
 */
public interface CategoriesService {

    /**
     * 获取分类列表
     * 
     * @param page 页码
     * @param size 每页大小
     * @return 分类列表
     */
    PageResult<CategoryDTO> listCategories(Integer page, Integer size);

    /**
     * 创建分类
     * 
     * @param categoryRequestDTO 分类请求DTO
     * @return 分类DTO
     */
    CategoryDTO createCategory(CategoryRequestDTO categoryRequestDTO);
    
    /**
     * 更新分类
     * 
     * @param id 分类ID
     * @param categoryRequestDTO 分类请求DTO
     * @return 分类DTO
     */
    CategoryDTO updateCategory(Long id, CategoryRequestDTO categoryRequestDTO);
    
    /**
     * 删除分类
     * 
     * @param id 分类ID
     * @return 是否成功
     */
    boolean deleteCategory(Long id);
    
    /**
     * 根据分类ID获取文章列表
     * 
     * @param categoryId 分类ID
     * @param queryRequest 查询条件
     * @return 文章分页结果
     */
    PageResult<PostDTO> getPostsByCategory(Long categoryId, PostQueryRequest queryRequest);
}